home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
CUGUK
/
APPLICAT
/
C034.ZIP
/
DBQAMS.C
< prev
next >
Wrap
Text File
|
2010-11-01
|
3KB
|
193 lines
/* SDB - AMSTRAD specific procedures and error messages */
#include "bdscio.h"
#include "dbqdefs.h"
int getcx(fp)
FILE *fp;
{
int ch, i;
if (fp!=STDIN)
if ((ch = getc(fp)) == '\r') {
if (dbv_verify) {
putchar(ch);
putchar('\n');
}
return (getc(fp));
}
else {
if (dbv_verify)
putchar(ch);
return (ch);
}
if (*pbuf > 0)
return *pbuf++;
pbuf = gbuf;
/* TEMP
for (i = 0; (ch = getc(fp)) != -1; )
if (i < LINEMAX) {
if (ch == ESC) {
i = 0;
putchar('\n');
fflush(STDOUT);
}
else
if (ch == BS) {
if (i > 0) {
printf("\010\033\116\010\033\116");
/* That should be 010 020 010 020 for CPM 2.2 */
i--;
}
}
else
gbuf[i++] = ch;
if (ch == '\n') break;
}
else {
printf("*** line too long ***\nRetype> ");
i = 0;
}
gbuf[i] = EOS;
*/
linein(gbuf);
return getcx(fp);
}
linein(lbuf)
char *lbuf;
{
char ibuf[256];
int ilen;
ibuf[0] = LINEMAX;
ibuf[1] = 1;
ibuf[2] = 0;
bdos(10,&ibuf);
ilen = ibuf[1];
ibuf[ilen+3] = EOS;
ibuf[ilen+2] = 10;
strcpy(lbuf,&ibuf[2]);
if (dbv_logging)
fputs(lbuf,dbv_lfp);
putchar('\n');
}
strncpy(to, from, n)
char *to, *from;
int n;
{
char *cp;
for( cp=to; n-- && (*cp++ = *from++); ) ;
if (n < 0)
*cp = 0;
return (to);
}
/* We'll use our own, thanks
int strncmp(s1, s2, n)
char *s1, *s2;
{
if (!n) return 0;
while (*s1 == *s2)
{
if ( ! *s1) return 0;
if ( ! --n) break;
++s1; ++s2;
}
return *s1 - *s2;
}
*/
strncmp(s1, s2, n)
char *s1,*s2;
int n;
{
for ( ; n-- && (*s1 == *s2); s2++ )
if (!*s1++)
return (0);
if (n < 0)
return 0;
if (*s1 < *s2)
return -1;
return 1;
}
/* error routine */
char *db_ertxt(msg)
int msg;
{
char *txt;
switch (msg) {
case INSMEM:
txt = "memory full";
break;
case RELFNF:
txt = "database file not found";
break;
case BADHDR:
txt = "bad file header";
break;
case TUPINP:
txt = "reading record";
break;
case TUPOUT:
txt = "writing record";
break;
case RELFUL:
txt = "database full";
break;
case RELCRE:
txt = "creating database";
break;
case DUPATT:
txt = "field name duplicated";
break;
case MAXATT:
txt = "too many fields";
break;
case INSBLK:
txt = "disk full";
break;
case SYNTAX:
txt = "syntax error";
break;
case ATUNDF:
txt = "field not defined";
break;
case ATAMBG:
txt = "field name ambiguous";
break;
case RLUNDF:
txt = "database name undefined";
break;
case CDSIZE:
txt = "expression too complex";
break;
case INPFNF:
txt = "input file not found";
break;
case OUTCRE:
txt = "creating output file";
break;
case INDFNF:
txt = "command file not found";
break;
case BADSET:
txt = "set parameter unknown";
break;
default:
txt = "bad error number";
break;
}
return (txt);
}
ADSET:
txt = "set parameter unknown";
b